package com.sangeng.service.impl;

import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sangeng.constant.SystemConstants;
import com.sangeng.domain.core.ResponseResult;
import com.sangeng.domain.dto.LinkPageDto;
import com.sangeng.domain.entity.Link;
import com.sangeng.domain.vo.LinkVo;
import com.sangeng.domain.vo.PageVo;
import com.sangeng.mapper.LinkMapper;
import com.sangeng.service.LinkService;
import com.sangeng.utils.BeanUtil;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * 友链(SgLink)表服务实现类
 *
 * @author makejava
 * @since 2025-06-16 14:33:16
 */
@Service("sgLinkService")
public class LinkServiceImpl extends ServiceImpl<LinkMapper, Link> implements LinkService {

    @Override
    public ResponseResult getAllLink() {

        LambdaQueryWrapper<Link> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Link::getStatus, SystemConstants.LINK_STATUS_NORMAL);
        List<Link> list = list(queryWrapper);
        List<LinkVo> ans = BeanUtil.copyBeanList(list, LinkVo.class);
        return ResponseResult.okResult(ans);
    }

    @Override
    public ResponseResult getAllLinkPages(LinkPageDto linkPageDto) {
        // 封装查询条件
        LambdaQueryWrapper<Link> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(!StringUtils.isBlank(linkPageDto.getStatus()), Link::getStatus, linkPageDto.getStatus())
                .like(!StringUtils.isBlank(linkPageDto.getName()), Link::getName, linkPageDto.getName());

        // 分页查询条件
        Page<Link> pageQuery = new Page<>(linkPageDto.getPageNum(), linkPageDto.getPageSize());

        // 执行查询
        Page<Link> page = page(pageQuery, queryWrapper);
        return ResponseResult.okResult(new PageVo(page.getRecords(), page.getTotal()));
    }
}

